<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <ul>
      <li>11</li>
      <li>22</li>
      <li>33</li>
    </ul>
    <script>
      //数组新增方法:
      //1.Array.from():把伪数组转成数组
      // var lis = document.getElementsByTagName("li");
      // console.log(lis); //HTMLCollection伪数组
      // var arr = Array.from(lis);
      // console.log(arr);

      //
      //2.Array.isArray()  判断某个类型是否是数组
      //如果是数组 就返还true 如果不是就返还false
      // var arr = []; //true
      // var arr = {}; //false
      // console.log(Array.isArray(arr));

      //
      //判断数据类型
      /*
      1.typeof :简单数据类型和函数
      简单数据类型 : 字符串 数字 布尔值 undefined null
      2.instanceof : 判断实例在原型链上和构造器是否有关系
      3.constructor : 判断实例的构造器是什么
      4.Object.prototype.toString.call : 精确判断所有数据类型
      5.Array.isArray() : 是否是一个数组
      */
      console.log(typeof null); //object
      console.log(typeof []); //object
      console.log(typeof {}); //object
      console.log(typeof function () {}); //function
      console.log(typeof /\d/); //object

      console.log([] instanceof Array); //true
      console.log({} instanceof Object); //true
      console.log([] instanceof Object); // true;

      console.log([].constructor === Array); // true;
      console.log({}.constructor === Object);
      console.log([].constructor === Object);

      console.log(Object.prototype.toString.call([]));
      console.log(Object.prototype.toString.call({}));
      console.log(Object.prototype.toString.call(function () {}));
      console.log(Object.prototype.toString.call("sfdds"));
      console.log(Object.prototype.toString.call(null)); //object Null

      //3.数组的填充  数组.fill():  可以填充数组里的内容
      var arr = [1, 2, 3, 4, 5, 6];
      arr.fill("a");
      console.log(arr); //通过一个a 字符串 填充数组里的所有内容；,全都覆盖了

      var arr = [1, 2, 3, 4, 5, 6, 7];
      arr.fill("a", 1); //从第一个开始覆盖
      console.log(arr);

      var arr = [1, 2, 3, 4, 5, 6, 7];
      arr.fill("a", 1, 3); // 包前不包后
      console.log(arr);

      //通过include 实现一个数组的去重
      var arr = ["a", "a", "c", "b", "a", "c"];
      // var arr1 = [];
      // arr.forEach((item) => {
      //   if (!arr1.includes(item)) arr1.push(item);
      // });
      // console.log(arr1);

      //
      var res = arr.reduce((current, item, key) => {
        if (!current.includes(item)) {
          current.push(item);
        }
        return current;
      }, []); //初始值为[],每次叠加push进去的item

      console.log(res);
    </script>
  </body>
</html>
